package 力扣面试经典150;

/**
 * Created with IntelliJ IEDA.
 * Description:
 * User:86186
 * Date:2024-03-20
 * Time:15:34
 */

/**
 * 力扣面试经典150:92. 反转链表 II
 * 中等
 * 相关标签
 * 相关企业
 * 给你单链表的头指针 head 和两个整数 left 和 right ，其中 left <= right 。请你反转从位置 left 到位置 right 的链表节点，返回 反转后的链表 。
 * 示例 1：
 * 输入：head = [1,2,3,4,5], left = 2, right = 4
 * 输出：[1,4,3,2,5]
 */
public class reverseBetween {
    public ListNode reverseBetween(ListNode head, int left, int right) {
        if(head == null)return null;
        ListNode dummy = new ListNode(0);
        dummy.next = head;
        ListNode pre = dummy;
        for(int i = 1;i < left;i++){
            pre = pre.next;
        }
        ListNode cur = pre.next;
        for(int i = left;i < right;i++){
            ListNode tmp = cur.next;
            cur.next = tmp.next;
            tmp.next = pre.next;
            pre.next = tmp;
        }
        return dummy.next;
    }
}
